/*
 * Copyright 2018 JDCLOUD.COM
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http:#www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * 
 * 
 *
 * 
 * Contact: 
 *
 * NOTE: This class is auto generated by the jdcloud code generator program.
 */


using System;
using System.Collections.Generic;
using System.Text;

using Newtonsoft.Json;

namespace JDCloudSDK.Kubernetes.Model
{

    /// <summary>
    ///  cluster 详情
    /// </summary>
    public class Cluster
    {

        ///<summary>
        /// 集群id
        ///</summary>
        public string ClusterId{ get; set; }
        ///<summary>
        /// 名称
        ///</summary>
        public string Name{ get; set; }
        ///<summary>
        /// 描述
        ///</summary>
        public string Description{ get; set; }
        ///<summary>
        /// kubernetes的版本
        ///</summary>
        [JsonProperty("version")]
        public string VersionValue{ get; set; }
        ///<summary>
        /// 集群所在的az
        ///</summary>
        public List<string> Azs{ get; set; }
        ///<summary>
        /// 节点组列表
        ///</summary>
        public List<NodeGroup> NodeGroups{ get; set; }
        ///<summary>
        /// k8s的cluster的cidr
        ///</summary>
        public string ClusterCidr{ get; set; }
        ///<summary>
        /// 认证信息
        ///</summary>
        public MasterAuth MasterAuth{ get; set; }
        ///<summary>
        /// 状态  [pending,running,reconciling（升级时的状态）, deleting, deleted, error]
        ///</summary>
        public string ClusterState{ get; set; }
        ///<summary>
        /// 状态变更原因
        ///</summary>
        public string StateMessage{ get; set; }
        ///<summary>
        /// 更新时间
        ///</summary>
        public string UpdateTime{ get; set; }
        ///<summary>
        /// 创建时间
        ///</summary>
        public string CreateTime{ get; set; }
        ///<summary>
        /// 用户的AccessKey，插件调用open-api时的认证凭证
        ///</summary>
        public string AccessKey{ get; set; }
        ///<summary>
        /// 基本验证方式
        ///</summary>
        public bool BasicAuth{ get; set; }
        ///<summary>
        /// 证书验证方式
        ///</summary>
        public bool ClientCertificate{ get; set; }
        ///<summary>
        /// 用户访问的ip
        ///</summary>
        public string Endpoint{ get; set; }
        ///<summary>
        /// endpoint的port
        ///</summary>
        public string EndpointPort{ get; set; }
        ///<summary>
        /// endpoint的dashboard port
        ///</summary>
        public string DashboardPort{ get; set; }
        ///<summary>
        /// deprecated 优先以addonsConfig中的配置为准 &lt;br&gt;用户是否启用集群自定义监控，true 表示开启用，false 表示未开启用
        ///</summary>
        public bool UserMetrics{ get; set; }
        ///<summary>
        /// 集群组件配置信息
        ///</summary>
        public List<AddonConfig> AddonsConfig{ get; set; }
        ///<summary>
        /// 是否开启集群自动升级，true 表示开启，false 表示未开启
        ///</summary>
        public bool AutoUpgrade{ get; set; }
        ///<summary>
        /// 配置集群维护策略
        ///</summary>
        public MaintenanceWindow MaintenanceWindow{ get; set; }
        ///<summary>
        /// 集群升级计划信息, 仅展示最新一条升级计划信息
        ///</summary>
        public UpgradePlan UpgradePlan{ get; set; }
        ///<summary>
        /// 控制节点操作进度
        ///</summary>
        public MaintenanceWindow MasterProgress{ get; set; }
        ///<summary>
        /// 网络配置信息
        ///</summary>
        public ClusterNetwork ClusterNetwork{ get; set; }
        ///<summary>
        /// 集群网络类型,可取值为auto和customized
        ///</summary>
        public string NetworkMode{ get; set; }
    }
}
